import zmail
import os
import datetime
import time
#引入正则表达式，替换掉非法字符
import re

# 用户名
username = "xxxxx@qq.com"
# 密码(非邮箱登录密码）
password = "token码"
# 文件夹保存路径
dirpath = "chenge/"
#输入账号和密码
server=zmail.server(username,password)

#获取最新的一封邮件
#mail=server.get_latest()
#获取总邮件数
count = server.stat()[0]

## 从0-count，表示邮箱中邮件从最久-到最新的顺序
for key in range(count,0,-1):
    # 获取邮件
    mail = server.get_mail(key)
    # 提取日期
    dates = (str(mail['date']).split("+")[0]).replace(" ", "-").replace(":", "-")
    # 判断邮件主题名称是否有非法字符
    normalized_name = re.sub('[*"/:?|<>\n]', '', mail['subject'], 0)
    # 以邮件主题命名创建文件夹
    file_path = dirpath+"/"+str(dates)+"-"+normalized_name
    # 判断文件夹是否存在
    if not os.path.exists(file_path):
        ## 不存在，创建
        os.makedirs(file_path)
        # 保存邮件正文
        with open(file_path+"/正文文本.txt", 'w', encoding='utf-8') as f:
            # 填写发件人邮箱+邮件主题+邮件正文到文本文档
            contentss = ''.join(mail['Content_text'])
            f.write(
                "发件人邮箱:" + mail['from'] + '\n' + "邮件主题:" + normalized_name + '\n' + "正文：" + ''.join(mail['Content_text']))

        #下载附件
        # 读取附件  邮件 存放路径  如果有同名文件则覆盖
        zmail.save_attachment(mail, target_path=file_path, overwrite=True)


